/* Copyright (c) Microsoft Corporation.
   Licensed under the MIT License. */

/***************************************************************************

	popup.h: Popup menu classes

	Primary Author: ******
	         MPFNT: ******
	Review Status: REVIEWED - any changes to this file must be reviewed!

	BASE ---> CMH ---> GOB ---> GOK ---> BRWD ---> BRWL ---> MP
                                          |
                                          +------> BRWT ---> MPFNT

***************************************************************************/
#ifndef POPUP_H
#define POPUP_H

/************************************
	MP - Generic popup menu class
*************************************/
#define MP_PAR BRWL
#define kclsMP 'MP'
typedef class MP *PMP;
class MP :  public MP_PAR
	{
	ASSERT
	MARKMEM
	RTCLASS_DEC
	CMD_MAP_DEC(MP)

protected:
	long _cid; // cid to enqueue to apply selection
	PCMH _pcmh; // command handler to enqueue command to

protected:
	virtual void _ApplySelection(long ithumSelect, long sid);
	virtual long _IthumFromThum(long thumSelect, long sidSelect);
	MP(PGCB pgcb) : MP_PAR(pgcb) { }
	bool _FInit(PRCA prca);

public:
	static PMP PmpNew(long kidParent, long kidMenu, PRCA prca, PCMD pcmd,
		BWS bws, long ithumSelect, long sidSelect, CKI ckiRoot, CTG ctg,
		PCMH pcmh, long cid, bool fMoveTop);

	virtual bool FCmdSelIdle(PCMD pcmd);
	};


/************************************
	MPFNT - Font popup menu class
*************************************/
#define MPFNT_PAR BRWT
#define kclsMPFNT 'mpft'
typedef class MPFNT *PMPFNT;
class MPFNT : public MPFNT_PAR
	{
	ASSERT
	MARKMEM
	RTCLASS_DEC
	CMD_MAP_DEC(MPFNT)

protected:
	void _AdjustRc(long cthum, long cfrm);

	virtual void _ApplySelection(long ithumSelect, long sid);
	virtual bool _FSetThumFrame(long istn, PGOB pgobPar);
	MPFNT(PGCB pgcb) : MPFNT_PAR(pgcb) { }

public:
	static PMPFNT PmpfntNew(PRCA prca, long kidParent, long kidMenu,
		PCMD pcmd, long ithumSelect, PGST pgst);

	virtual bool FCmdSelIdle(PCMD pcmd);
	};

#endif // POPUP_H
